#include "instrumento.h"
#include "plato.h"
#include "tambor.h"
#include "bombo.h"
#include "entrenador.h"

Instrumento::Instrumento() : QObject(NULL)
{
	Bombo* bombo = new Bombo();
	bombo->setNota("bass");
	bombo->setEncuadre(QRectF(35, 43, 22, 18));
	listaPiezas.append(bombo);

	Tambor* caja = new Tambor();
	caja->setNota("snare");

	caja->setEncuadre(QRectF(30, 25, 14, 14));
	listaPiezas.append(caja);

	Tambor* timbal = new Tambor();
	timbal->setNota("tom");
	timbal->setEncuadre(QRectF(30, 40, 12, 12));
	listaPiezas.append(timbal);

	Tambor* base = new Tambor();
	base->setNota("base");
	base->setEncuadre(QRectF(50, 25, 16, 16));
	listaPiezas.append(base);

	Plato* platoHH = new Plato();
	platoHH->setNota("hihat");    
	platoHH->setEncuadre(QRectF(10, 30, 14, 14));
	listaPiezas.append(platoHH);

    Plato* platoHHFoot = new Plato();
	platoHHFoot->setNota("hhfoot");    
	platoHHFoot->setEncuadre(QRectF(10, 30, 14, 14));
	listaPiezas.append(platoHHFoot);

	Plato* platoCR1 = new Plato();
	platoCR1->setNota("crash");
	platoCR1->setEncuadre(QRectF(10, 50, 16, 16));
	listaPiezas.append(platoCR1);

	Plato* platoRD = new Plato();
	platoRD->setNota("ride");
	platoRD->setEncuadre(QRectF(50, 40, 22, 22));
	listaPiezas.append(platoRD);
}

Instrumento::~Instrumento()
{
    foreach (PiezaInstrumento* pieza, listaPiezas) {
        delete pieza;
    }
}

void Instrumento::dibujarEsquema(QPainter* painter, ConversorUnidades* conversor)
{
   foreach (PiezaInstrumento* pieza, listaPiezas) {
        pieza->dibujarEsquema(painter, conversor);
   }
}

void Instrumento::dibujarNotas(QPainter* painter, ConversorUnidades* conversor)
{
   foreach (PiezaInstrumento* pieza, listaPiezas) {
        pieza->dibujarNotas(painter, conversor);
   }
}

int Instrumento::getIndiceNota(int nota)
{	
	QString nombreNota = Entrenador::getInstancia()->getNombreNota(nota);
	return getIndiceNota(nombreNota);
}

int Instrumento::getIndiceNota(const QString& nombreNota)
{
	for (int i = 0; i < listaPiezas.size(); i++) {
		if (listaPiezas.at(i)->getNombreNota() == nombreNota) {
			return i;
		}
	}
	return -1;
}

